/*
 * ================================================================================变量定义区
 */

var showCount = 10; // 定义每页显示条数
var currentPage = 1; //全局变量，当前页

/*
 * ================================================================================页面初始化函数
 */
$(function() 
{
	//获取是否有历史当前页信息
	var pageType = $("#pageType").val();
	
	//获取上次列表
	if(pageType === 'lastest')
	{
		getLastestListAndForm();
	}
	else
	{
		getCurrentList(currentPage);
	}
	
	//回车事件
	document.onkeydown = function(event) 
	{
		var e = event || window.event || arguments.callee.caller.arguments[0];

		if (e && e.keyCode == 13) 
		{ 
			event.preventDefault?event.preventDefault():event.retumValue=false;
			queryButtonClickEvent();
		}
	};
});

/*
 * ================================================================================函数定义区
 * 
 */

/**
 * 获取列表数据
 * 
 * @param currentPage 请求的页码
 *      
 */
function getRoleList(param) 
{
	$.ajax(
	{
		type : 'POST',
		url : BASE_PATH + '/roleManagement/listPageData.do',
		dataType : "json",
		data : param,
		cache : false,
		
		success : function(data, textStatus) 
		{
			var html = "";
			var pageData = data;
			var totalResult = pageData.queryParam.totalResult;
			
			if (pageData.queryResult != null) 
			{

				$.each(
					pageData.queryResult,function(i, n) 
					{
						html += '<tr onclick="chooseRow(this,false);"  id="tr_index_' + i + '">';
						html += '<td style="text-align: left;width: 13%;" title='
								+ switcHtml(n.role_name)
								+ '><input type="hidden" value="'
								+ switcHtml(n.role_name)
								+ '"/>'
								+ switcHtml(n.role_name) + '</td>';
						html += '<td style="text-align: left;width: 13%;" title='
								+ switcHtml(n.role_name_cn)
								+ '>'
								+ switcHtml(n.role_name_cn) + '</td>';
						html += '<td style="text-align: left;width: 13%;" title='
								+ n.create_user
								+ '>'
								+ n.create_user + '</td>';
						html += '<td style="text-align: center;width: 15%;" title='
								+ n.create_time
								+ '>'
								+ n.create_time + '</td>';
						
						if (n.last_modify_user == null	|| n.last_modify_user == "") 
						{
							html += '<td style="text-align: left;width: 15%;" title=' 
								+ n.create_user+'>' 
								+ n.create_user + '</td>';
						} 
						else 
						{
							html += '<td style="text-align: left;width: 15%;" title=' 
								+ n.last_modify_user + '>' 
								+ n.last_modify_user + '</td>';
						}
						
						if (n.last_modify_time == null	|| n.last_modify_time == "") 
						{
							html += '<td style="text-align: center;width: 15%;" title=' 
								+ n.create_time+'>' 
								+ n.create_time + '</td>';
						} 
						else 
						{
							html += '<td style="text-align: center;width: 15%;" title=' 
								+ n.last_modify_time + '>' 
								+ n.last_modify_time + '</td>';
						}
						 
						html += '<td style="text-align: left;width: 14.5%;" title='
								+ switcHtml(n.remark)
								+ '>'
								+ switcHtml(n.remark)
								+ '</td>';
						html += '<td style="width: 1px;" >'+''+'</td></tr>';
					});

			} 
			else 
			{
				html = '<tr><td colspan="2">No items.</td></tr>';
			}

			$('#tBodyList').html(html);

			//请求第一页时，同时初始化分页插件。
			currentPage = param.currentPage;
			if (totalResult == 0) 
			{
				$('#tBodyList').html('<tr><td style="text-align:center;">No items.</td></tr>');
				$("#pagination").hide();
			} 
			else 
			{
				// 创建分页
				$("#pagination").show();
				$("#pagination").pagination(totalResult, 
				{
					num_edge_entries : 1, //边缘页数
					num_display_entries : 3, //主体页数
					current_page : currentPage,
					callback : pageListCallback,
					items_per_page : showCount//每页显示1项
				});
			}
			chooseId= null;
		},
		
		error : function(e) 
		{
			openAlert("加载数据错误！");
			return;
		}
	});
}

//查询按钮单击事件
function queryButtonClickEvent()
{
	getCurrentList(1);
}

//新建按钮单击事件
function newButtonClickEvent() 
{
	$("#submitForm [name=role_name]").val('');
	//设置SessionStorage表单当前信息
	setUnSearchFormParam();
	$("#submitForm").submit();
}

//修改按钮单击事件
function modifyButtonClickEvent() 
{
	var id = getSelectedRows();
	if (!id || id.length < 1) 
	{
		openAlert('请选择一条记录');
		return false;
	}
	var role_name = $("#" + id).find("input").val();
	$("#submitForm [name=role_name]").val(role_name);
	//设置SessionStorage表单当前信息
	setUnSearchFormParam();
	$("#submitForm").submit();
}

/**
 * 删除按钮单击事件
 * 
 * @returns {Boolean}
 */
function deleteButtonClickEvent() 
{
	var id = getSelectedRows();
	
	if (!id || id.length < 1) 
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	openConfirm("确认删除吗？", null, function() 
	{
		var role_name = $("#" + id).find("input").val();

		$.ajax(
		{
			type : 'POST',
			url : BASE_PATH + '/roleManagement/deleteRole.do',
			dataType : "json",
			contentType : "application/json;charset=UTF-8",
			data : JSON.stringify(role_name),
			success : function(data) 
			{
				if (data == 'success') 
				{
					openAlert('删除成功', function() 
					{
						chooseId= null;
						getCurrentList(currentPage);
					});
				} 
				
				else if (data == 'userUsing')
				{
					chooseId= null;
					$("#"+id).removeClass("list_choosedRow");
					openAlert('角色名称被用户引用，删除失败');
				}
				
				else if (data == 'resUsing')
				{
					chooseId= null;
					$("#"+id).removeClass("list_choosedRow");
					openAlert('角色名称被资源引用，删除失败');
				}
				
				else if (data == 'userAndResUsing')
				{
					chooseId= null;
					$("#"+id).removeClass("list_choosedRow");
					openAlert('角色名称被角色和资源同时引用，删除失败');
				}
				
			},
			
			error : function(e) 
			{
				openAlert('操作失败！错误信息：<div>' + e.responseText + "</div>");
			}
		});
	});
}

/**
 * 查看用户按钮单击事件
 * 
 * @returns {Boolean}
 */
function viewUserButtonClickEvent() 
{
	var id = getSelectedRows();
	
	if (!id || id.length < 1) 
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	var role_name = $("#" + id).find("input").val();
    popUpPanel(BASE_PATH + "/roleManagement/viewRolePopup_sitemesh_popup.do", role_name, 1000,570);
}

/**
 * 添加用户按钮单击事件
 * @returns {Boolean}
 */
function addUserButtonClickEvent() 
{
	var id = getSelectedRows();
	
	if (!id || id.length < 1) 
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	var role_name = $("#" + id).find("input").val();
	popUpPanel(BASE_PATH + "/roleManagement/addUserPopup_sitemesh_popup.do",role_name, 1000, 570);
}

/**
 * 获取当前请求列表
 * @param pageIndex
 */
function getCurrentList(pageIndex)
{
	//获取查询参数
	var role_name = $("#role_name").val().trim().toUpperCase();
	var role_name_cn = $("#role_name_cn").val().trim().toUpperCase();
		
	var param = 
	{
	    "showCount"      :showCount,
	    "currentPage"    :pageIndex,
	    "role_name"      :role_name,
	    "role_name_cn"   :role_name_cn,
	    "query_condition_field_list" : "role_name,role_name_cn"
    };
	getRoleList(param);
	
	//向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam: 
		{
			role_name : role_name,
			role_name_cn : role_name_cn
		},
		searchParam: param
	});
}

/**
 * 获取最近一次的列表
 * 从SessionStorage中获取参数
 */
function getLastestListAndForm()
{
	// 获取参数
	var param = SessionStorage.getSearchParam(),
	// 表单参数
	formParam = param.formParam,
	// 搜索参数
	searchParam = param.searchParam;
	
	$("#role_name").val(formParam.role_name);
	
	$("#role_name_cn").val(formParam.role_name_cn);
	// 列表获取
	getRoleList(searchParam);
	
	// 向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam : formParam,
		searchParam : searchParam
	});
}

/**
 * 分页数据回调函数
 * @param pageIndex 请求页
 */
function pageListCallback(pageIndex)
{
	getCurrentList(pageIndex);
}

/**
 * 设置未进行搜索的表单信息
 */
function setUnSearchFormParam()
{
	// 获取参数
	var param = SessionStorage.getSearchParam();
	// 设置表单参数
	param.formParam = 
	{
		role_name : $("#role_name").val(),
		role_name_cn : $("#role_name_cn").val(),
	};
	// 重置SessionStrage数据
	SessionStorage.setSearchParam(param);
}